package main

import "fmt"

//type fulei01 struct {
//	id   int
//	neme string
//	age  int
//}
//
////推荐使用带指针的方法
//func (s *fulei01) Pfff03() {
//	fmt.Printf("编号%d\n", s.id)
//	fmt.Printf("姓名%s\n", s.neme)
//	fmt.Printf("年龄%d\n", s.age)
//	fmt.Printf("%p,%v\n",s,&s)
//
//}
//func (s fulei01) Pfff02() {
//	fmt.Printf("编号%d\n", s.id)
//	fmt.Printf("姓名%s\n", s.neme)
//	fmt.Printf("年龄%d\n", s.age)
//	fmt.Printf("%p,%v\n",s,s)
//
//}
type fule struct {
	id   int
	name string
	age  int
}

func (s01 *fule) ptt() {
	fmt.Printf("%p,%v\n", s01, *s01)
}
func (s01 fule) ptt01() {
	fmt.Printf("%p,%v\n", &s01, s01)
}
func main() {
	s := fule{01, "小你不能哥们", 18}
	s.ptt01()
	s.ptt()
	fmt.Println(s)
	//方法值
	//方式1
	var s1 func()
	s1 = s.ptt
	s1()
	fmt.Printf("%T\n", s1)
	//方法2
	s2 := s.ptt01
	s2()
	fmt.Printf("%T\n", s2)
	//方法表达式
	s3 := (*fule).ptt
	s3(&s)
	s4 := fule.ptt01
	s4(s)

}
